/*******************************************
  Jose Andres Lara Vecino

  Author       : $Author: cainlara@gmail.com $
  Last CheckIn : $Date: 2012-08-22 18:35:06 +0000 (Wed, 22 Aug 2012) $
  Revision     : $Revision: 100 $
*******************************************/

package gui;

import generico.GenericoDialogo;

import java.awt.BorderLayout;
import java.awt.Color;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;

import javax.swing.JColorChooser;

import mensaje.Mensaje;
import utilidad.IPropiedades;

/**
 * Dialogo para seleccionar color.
 * 
 * @author jose.lara 14.06.2012
 */
public class SeleccionarColorDialogo extends GenericoDialogo {
    private static final long serialVersionUID = -8986012703612477383L;
    
    private JColorChooser seleccionador = null;
    private BotonesPanel botonesPanel   = null;
    
    
    public SeleccionarColorDialogo() {
        super(Mensaje.getMensaje("SELECCIONAR_COLOR-TITULO"));
        setLayout(new BorderLayout());
        add(getSeleccionador(), BorderLayout.CENTER);
        add(getBotonesPanel(), BorderLayout.SOUTH);
        pack();
    }
    
    private JColorChooser getSeleccionador() {
        if(seleccionador == null) {
            seleccionador = new JColorChooser();
        }
        
        return seleccionador;
    }
    
    private BotonesPanel getBotonesPanel() {
        if(botonesPanel == null) {
            botonesPanel = new BotonesPanel(BotonesPanel.BOTONES_ACEPTAR_CANCELAR);
            
            botonesPanel.addPropertyChangeListener(new PropertyChangeListener() {
                
                @Override
                public void propertyChange(PropertyChangeEvent evt) {
                    if(evt.getPropertyName().equals(IPropiedades.BOTON_PRESIONADO)) {
                        tratarBotonPresionado((Integer) evt.getNewValue());
                    }
                }
            });
        }
        
        return botonesPanel;
    }
    
    @Override
    protected void guardar() {
        //No es requerido
    }
    
    private void tratarBotonPresionado(int botonPresionado) {
        if(botonPresionado == BotonesPanel.ACEPTAR) {
            notificarColorSeleccionado();
        }
        
        cerrarDialogo();
    }
    
    private void notificarColorSeleccionado() {
        firePropertyChange(IPropiedades.COLOR_SELECCIONADO, null, getSeleccionador().getColor());
    }
    
    public void setColorSeleccionado(Color color) {
        getSeleccionador().setColor(color);
    }
}